Auditing হল একটি প্রক্রিয়া যা ডেটাবেসে রেকর্ড করা কোনো সত্তার সৃষ্টি (creation), পরিবর্তন (modification), অথবা মুছে ফেলার (deletion) সময় ট্র্যাক করে। Spring ORM এবং Hibernate ব্যবহার করে Auditing কার্যকরভাবে বাস্তবায়ন করা যায়। Spring Data JPA এ @CreatedDate
, @LastModifiedDate
, @CreatedBy
, এবং @LastModifiedBy
অ্যানোটেশনগুলো দিয়ে এই কাজটি করা যায়।
Spring Data JPA এবং Auditing এর জন্য প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.5.4</version>
</dependency>
Spring Data JPA-তে auditing সক্রিয় করার জন্য প্রথমে @EnableJpaAuditing
অ্যানোটেশন ব্যবহার করতে হবে এবং এর সাথে AuditorAware
ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।
@Configuration
@EnableJpaAuditing
public class JpaConfig {
@Bean
public AuditorAware<String> auditorProvider() {
return new AuditorAwareImpl();
}
}
AuditorAware
ইন্টারফেস ইমপ্লিমেন্ট করে ব্যবহারকারীর তথ্য ট্র্যাক করা হয়। উদাহরণস্বরূপ, এই ক্লাসে ব্যবহারকারী হিসাবে Admin
ব্যবহৃত হয়েছে, তবে আপনি এটি বাস্তবিক অ্যাপ্লিকেশনে নিরাপত্তা প্রেক্ষিতে কাস্টমাইজ করতে পারেন।
@Component
public class AuditorAwareImpl implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
// এখানে বর্তমান ব্যবহারকারী ফিরিয়ে দেওয়া হবে, যেমন "Admin"
return Optional.of("Admin");
}
}
Auditing তথ্য সংগ্রহ করতে @CreatedDate
, @LastModifiedDate
, @CreatedBy
, এবং @LastModifiedBy
অ্যানোটেশন ব্যবহার করা হয়।
@Entity
@EntityListeners(AuditingEntityListener.class)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
@CreatedDate
@Column(name = "created_date")
private LocalDateTime createdDate;
@LastModifiedDate
@Column(name = "last_modified_date")
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(name = "created_by")
private String createdBy;
@LastModifiedBy
@Column(name = "last_modified_by")
private String lastModifiedBy;
// Getters and Setters
}
Spring Data JPA রেপোজিটরি ব্যবহার করে User
সত্তার উপর CRUD অপারেশন সম্পাদন করা হয়। এখানে JpaRepository
ব্যবহার করা হচ্ছে।
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
ডেটাবেসে রেকর্ড তৈরি ও আপডেট করার জন্য সার্ভিস লেয়ার তৈরি করা হয়।
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User saveUser(User user) {
return userRepository.save(user);
}
public User updateUser(User user) {
return userRepository.save(user);
}
}
REST API বা MVC কন্ট্রোলার লেয়ারে ডেটা গ্রহণ ও ফেরত দেওয়ার জন্য কন্ট্রোলার তৈরি করা হয়।
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/add")
public ResponseEntity<User> addUser(@RequestBody User user) {
User savedUser = userService.saveUser(user);
return ResponseEntity.ok(savedUser);
}
@PutMapping("/update")
public ResponseEntity<User> updateUser(@RequestBody User user) {
User updatedUser = userService.updateUser(user);
return ResponseEntity.ok(updatedUser);
}
}
যখন User
এন্টিটি তৈরি বা আপডেট করা হয়, তখন createdDate
, lastModifiedDate
, createdBy
, এবং lastModifiedBy
কলামগুলো স্বয়ংক্রিয়ভাবে পূর্ণ হবে।
উদাহরণ:
createdDate
এবং createdBy
ফিল্ড পূর্ণ হবে।lastModifiedDate
এবং lastModifiedBy
ফিল্ড পূর্ণ হবে।Spring ORM এবং Hibernate এর মাধ্যমে Auditing বাস্তবায়ন করার মাধ্যমে আপনি একটি সিস্টেমে ডেটা পরিবর্তন এবং এর ইতিহাস সঠিকভাবে ট্র্যাক করতে পারবেন।
Read more